import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import { resolve } from 'path';
import dts from 'vite-plugin-dts';
import VitePluginStyleInject from 'vite-plugin-style-inject';

export default defineConfig({
  build: {
    lib: {
      entry: resolve(__dirname, './core/index.ts'),
      name: 'Bundle',
      fileName: 'bundle',
    },
    rollupOptions: {
      // input: ['./core/index.ts'],
      // output: [
      //   {
      //     //打包格式
      //     format: 'es',
      //     //打包后文件名
      //     entryFileNames: '[name].mjs',
      //     //让打包目录和我们目录对应
      //     preserveModules: true,
      //     exports: 'named',
      //     //配置打包根目录
      //     dir: './dist/es',
      //   },
      //   {
      //     //打包格式
      //     format: 'cjs',
      //     //打包后文件名
      //     entryFileNames: '[name].js',
      //     //让打包目录和我们目录对应
      //     preserveModules: true,
      //     exports: 'named',
      //     //配置打包根目录
      //     dir: './dist/lib',
      //   },
      // ],
      // 确保外部化处理那些你不想打包进库的依赖
      external: ['vue'],
      output: {
        // 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量
        globals: {
          vue: 'Vue',
        },
      },
    },
  },
  plugins: [vue(), VitePluginStyleInject(), dts({ include: './core' })],
  resolve: {
    alias: [
      //配置别名
      { find: '@', replacement: resolve(__dirname, 'src') },
    ],
    // 情景导出 package.json 配置中的exports字段
    conditions: [],
    // 导入时想要省略的扩展名列表
    // 不建议使用 .vue 影响IDE和类型支持
    extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json'],
  },
  optimizeDeps: {
    //是否强制依赖预构建
    force: true,
  },
});
